package com.tfjybj.itoo.exam.provider.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tfjybj.itoo.exam.entity.StudentEntity;
import com.tfjybj.itoo.exam.model.StudentModel;
import com.tfjybj.itoo.exam.template.ScreenClassStu;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * StudentDao接口
 * student表
 *
 * @author 杨江涛
 * @version 2.0.0
 * @since 2.0.0 2018-11-15 10:35:56
 */
@Repository("studentDao")
public interface StudentDao extends BaseMapper<StudentEntity> {
	
	//region 模板生成：模糊查询
	/**
     * 根据姓名模糊查询student
     *
     * @param name  姓名
     * @return 模糊查询的student集合
     * @author 杨江涛
     * @since 2.0.0 2018-11-15 10:35:56
     */
    List<StudentEntity> queryLikeName(@Param("name") String name);


    //endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 根据学号查询学生所有信息
     * @param code 学号
     * @return 该学生所有信息
     * @author 杨江涛
     * @since 2.0.0 2018-11-15 10:35:56
     */
    StudentEntity findByCode(@Param("code") String code);

    /**
     * 根据学生Id查询学生信息
     *
     * @param id 数据
     * @return 根据学生Id查询学生信息
     * @author 樊建华
     * @since 2018年11月22日11:29:43
     */
    StudentModel findStudentById(String id);

    /**
     * 根据行政班id查询对应的所有学生信息
     * @param classId 行政班id
     * @return  根据行政班id查询对应的所有学生信息
     * @author 杨江涛
     * @since 2018-11-28 20:23:10
     */
    List<StudentModel> findByClassId(@Param("classId") String classId);

    /**
     * 根据行政班id和考试开始时间查询不在这个范围的所有学生
     *
     * @param classId 行政班id
     * @param startTime 考试开始时间
     * @param stuNameOrStuCode 模糊查询学生模糊值
     * @param endTime 考试结束时间
     * @since 2018-12-7 20:02:20
     * @return List<ScreenClassStu>
     * @author 马莹
     */
    List<ScreenClassStu> queryNoExamination(@Param("classId") String classId, @Param("startTime") String startTime, @Param("stuNameOrStuCode") String stuNameOrStuCode, @Param("endTime") String endTime);

    /**
     * 根据姓名、学号、班级名称模糊查询对应的学生信息及班级名称
     * @param searchInfo 行政班id
     * @return 对应的学生信息及班级名称
     * @author 杨江涛
     * @since 2018-11-28 20:23:10
     */
    List<StudentModel> findClassStudent(@Param("searchInfo") String searchInfo);



    StudentEntity findByStudentNo(String studentNo);

    /**
     * 根据上课班id查询该班所有学生
     *
     * @param teachClassId 上课班id
     * @return 学生集合
     * @author 郭满亮
     * @since 2019年2月27日16:44:34
     */
    List<StudentEntity> getStudent(@Param("teachClassId") String teachClassId);
    /**
     * 根据学号查询学生id
     * @param codeId 学号
     * @return 学生id
     * @author 郭满亮
     * @since 2019年2月28日10:19:46
     */
    String getCodeById(@Param("codeId") String codeId);
}
